package offer2

/*
原题链接:
https://leetcode.cn/problems/qiu-12n-lcof/description/

B站 帅地玩编程
剑指 Offer 64. 求1+2+…+n
求 1+2+...+n
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句

示例 1：
输入: n = 3
输出: 6
示例 2：

输入: n = 9
输出: 45
*/
func mechanicalAccumulator(target int) int {
	res := 0               //1.声明结果
	var sum func(int) bool //2.声明sum求和函数

	sum = func(target int) bool {
		res += target                      //累加操作
		return target > 0 && sum(target-1) //只要target > 0,那么就进行sum(target-1)递归调用
	}
	sum(target) //3.调用函数
	return res  //4.返回结果
}
